Tapestry পেজ এবং কম্পোনেন্টে Locale Management

Web Development - অ্যাপাচি ট্যাপেস্ট্রি (Apache Tapestry) - Tapestry এর Localization এবং Internationalization |

Locale Management একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যখন আপনি একটি মাল্টি-ল্যাংগুয়েজ বা আন্তর্জাতিক ওয়েব অ্যাপ্লিকেশন তৈরি করতে চান। Locale সাধারণত ভাষা এবং অঞ্চল বোঝায়, যেমন ইংরেজি (en) বা বাংলা (bn), যা বিভিন্ন দেশের বা অঞ্চলের ভাষা এবং সংস্কৃতির জন্য উপযুক্ত।

Apache Tapestry তে Locale Management এর মাধ্যমে আপনি অ্যাপ্লিকেশনের বিভিন্ন ভাষার মধ্যে স্যুইচ করতে পারেন এবং ইউজারের নির্বাচিত ভাষায় কনটেন্ট প্রদর্শন করতে পারেন।

এই টিউটোরিয়ালে, আমরা দেখব কিভাবে Tapestry তে পেজ এবং কম্পোনেন্টে Locale ম্যানেজ করা যায়।


১. Tapestry তে Locale সেটআপ করা

Tapestry তে Locale ম্যানেজমেন্টের জন্য আপনাকে প্রথমে messages.properties ফাইলগুলি তৈরি করতে হবে এবং সেগুলোর মধ্যে ভাষার অনুবাদ এবং কনটেন্ট ম্যানেজ করতে হবে।

Locale ফাইল তৈরি

ধরা যাক, আপনি ইংরেজি এবং বাংলার জন্য অনুবাদ চাইছেন।

  1. messages.properties (default locale - English):
# messages.properties (English - default locale)
welcome.message=Welcome to our website!
login.button=Login
  1. messages_bn.properties (Bangla locale):
# messages_bn.properties (Bangla locale)
welcome.message=আমাদের ওয়েবসাইটে স্বাগতম!
login.button=লগইন

এখানে:

  • messages.properties হল ডিফল্ট ইংরেজি ভাষার ফাইল।
  • messages_bn.properties হল বাংলা ভাষার জন্য ফাইল।

২. Tapestry তে Locale ব্যবহার করা

Tapestry তে Locale পরিবর্তন করার জন্য এবং ভাষা অনুযায়ী কনটেন্ট প্রদর্শন করার জন্য @Inject অ্যানোটেশন এবং @Property ব্যবহার করা যায়। Tapestry আপনাকে @Persist অ্যানোটেশনও প্রদান করে, যার মাধ্যমে আপনি ইউজারের নির্বাচিত Locale সেট রাখতে পারবেন।

Locale সেট করা এবং ব্যবহার করা

  1. UserPreferences.java (Locale সেট এবং ব্যবহার):
package com.example.pages;

import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.annotations.Persist;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.ioc.services.Messages;

public class UserPreferences {

    @Persist
    @Property
    private String selectedLanguage = "en";  // Default language is English

    @Inject
    private Messages messages;  // Inject the Messages service for localization

    // Method to switch language
    public void changeLanguage(String languageCode) {
        selectedLanguage = languageCode;
    }

    // Displaying message based on the selected language
    public String getWelcomeMessage() {
        return messages.get("welcome.message");  // This will automatically pick the language based on locale
    }

    public String getLoginButtonText() {
        return messages.get("login.button");  // This will display Login button text in selected language
    }
}

এখানে:

  • selectedLanguage প্রপার্টি ইউজারের নির্বাচিত ভাষা রাখে (ডিফল্ট: ইংরেজি)।
  • changeLanguage() মেথডের মাধ্যমে ইউজার যে ভাষা নির্বাচন করবে, তা selectedLanguage তে সেট করা হবে।
  • messages.get() ব্যবহার করা হয়, যাতে প্রতিটি পেজে কনটেন্ট সঠিক ভাষায় প্রদর্শিত হয়।

৩. Tapestry তে Locale পরিবর্তন করা

Locale পরিবর্তন করার জন্য, আপনাকে একটি পেজে select ড্রপডাউন বা button ব্যবহার করতে হবে, যেখানে ইউজার নির্ধারণ করতে পারবে যে কোন ভাষায় অ্যাপ্লিকেশনটি প্রদর্শিত হবে।

  1. Locale স্যুইচিং UI (locale-switcher.tml):
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
    <head>
        <title>Language Selector</title>
    </head>
    <body>
        <h2>${welcomeMessage}</h2>
        <button t:id="loginButton">${loginButtonText}</button>

        <form t:id="languageForm">
            <select t:id="languageSelector" t:value="selectedLanguage">
                <option value="en">English</option>
                <option value="bn">বাংলা</option>
            </select>
            <button type="submit">Change Language</button>
        </form>
    </body>
</html>

এখানে:

  • <select> ড্রপডাউন ব্যবহার করে ইউজার ভাষা নির্বাচন করতে পারে।
  • t:value="selectedLanguage" এইভাবে selectedLanguage প্রপার্টি বাংলা বা ইংরেজি সেট করবে।

৪. Locale এ স্বয়ংক্রিয় স্যুইচিং

Tapestry আপনাকে LocaleSwitcher ফিচার সরবরাহ করে, যা ইউজারের ব্রাউজার বা সেশন থেকে ভাষা সিলেক্ট করতে সহায়ক। আপনি যদি সার্ভারের সেশন বা ইউজারের ব্রাউজারের ভাষার উপর ভিত্তি করে Locale স্যুইচ করতে চান, তবে আপনাকে এটি LocaleSwitcher মাধ্যমে করতে হবে।

LocaleSwitcher ব্যবহার

  1. LocaleSwitcherService.java (Locale স্যুইচ করতে):
package com.example.services;

import org.apache.tapestry5.services.ApplicationGlobals;
import org.apache.tapestry5.services.Request;
import org.apache.tapestry5.services.Response;

public class LocaleSwitcherService {
    private final ApplicationGlobals applicationGlobals;
    private final Request request;
    private final Response response;

    public LocaleSwitcherService(ApplicationGlobals applicationGlobals, Request request, Response response) {
        this.applicationGlobals = applicationGlobals;
        this.request = request;
        this.response = response;
    }

    // Method to switch locale
    public void switchLocale(String language) {
        response.setLocale(new java.util.Locale(language));
        applicationGlobals.getLocale();
    }
}

এখানে, LocaleSwitcherService কাস্টম সার্ভিস দ্বারা locale পরিবর্তন করা হচ্ছে।


সারাংশ

Tapestry তে Locale Management এর মাধ্যমে আপনি বিভিন্ন ভাষায় কনটেন্ট প্রদর্শন করতে পারেন এবং ইউজারকে নির্দিষ্ট ভাষায় স্যুইচ করার সুযোগ দিতে পারেন।

  • Locale পরিবর্তনের জন্য messages.properties ফাইল ব্যবহার করতে হয়।
  • Locale পরিবর্তনের জন্য @Persist এবং Messages সার্ভিস ব্যবহার করা হয়।
  • LocaleSwitcher ফিচার দিয়ে ব্রাউজার বা সেশন ভিত্তিক ভাষা পরিবর্তন করা যায়।

এভাবে, Tapestry তে আন্তর্জাতিককরণ বা মাল্টি-ল্যাংগুয়েজ সাপোর্ট সরবরাহ করা যায়, যাতে আপনার অ্যাপ্লিকেশনটি একাধিক ভাষায় ব্যবহারযোগ্য হয়ে ওঠে।

Content added By
Promotion